using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._DataInteroperabilityTools
{
    /// <summary>
    /// <para>Quick Export</para>
    /// <para>Geoprocessing tool to convert one or more input feature classes or feature layers into any format supported by the ArcGIS Data Interoperability extension.</para>
    /// <para>地理处理工具，用于将一个或多个输入要素类或要素图层转换为 ArcGIS Data Interoperability 扩展模块支持的任何格式。</para>
    /// </summary>    
    [DisplayName("Quick Export")]
    public class QuickExport : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public QuickExport()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_Input">
        /// <para>Input Layer</para>
        /// <para>The feature layers or feature classes that will be exported from ArcGIS.</para>
        /// <para>将从 ArcGIS 导出的要素图层或要素类。</para>
        /// </param>
        /// <param name="_Output">
        /// <para>Output Dataset</para>
        /// <para>The format and dataset to which the data will be exported.</para>
        /// <para>数据将导出到的格式和数据集。</para>
        /// </param>
        public QuickExport(List<object> _Input, object _Output)
        {
            this._Input = _Input;
            this._Output = _Output;
        }
        public override string ToolboxName => "Data Interoperability Tools";

        public override string ToolName => "Quick Export";

        public override string CallName => "interop.QuickExport";

        public override List<string> AcceptEnvironments => ["workspace", "scratchWorkspace"];

        public override object[] ParameterInfo => [_Input, _Output];

        /// <summary>
        /// <para>Input Layer</para>
        /// <para>The feature layers or feature classes that will be exported from ArcGIS.</para>
        /// <para>将从 ArcGIS 导出的要素图层或要素类。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Layer")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public List<object> _Input { get; set; }


        /// <summary>
        /// <para>Output Dataset</para>
        /// <para>The format and dataset to which the data will be exported.</para>
        /// <para>数据将导出到的格式和数据集。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Dataset")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _Output { get; set; }


        public QuickExport SetEnv(object workspace = null, object scratchWorkspace = null)
        {
            base.SetEnv(workspace: workspace, scratchWorkspace: scratchWorkspace);
            return this;
        }

    }

}